/* 
 * File:   Main.cpp
 * Author: arkadiusz
 *
 * Created on 14 październik 2008, 12:11
 */

#include "AopernCV.h"

#include <iostream>

#include "Wektor.h"
#include "DaneWej.h"
#include "WekNormalne.h"
#include "ZapiszPlik.h"
#include "Algorytmy.h"
#include "AlgorytmB1.h"
#include <time.h>

using namespace std;

/**
 * Program startowy, kolejne funkcje wywoływane jedna po drugie i zmieniajace
 * obiekt Skan3D aż do uzyskania kolorowego pliku z danymi.
 */
int main(int argc, char** argv) {

    clock_t start, finish;
    double duration;
    start = clock();

    char* plik = argv[1]; // nazwa pliku przez argument programu
    Skan3D* skan3d = NULL; // skan 3d 
    string katArekLin("/home/arkadiusz/JavaApp/klasyfikator/Klasyfikator_Powierzchni/");
    string katArekWin();
    string katMichal("D:\\Users\\mignat\\IPPT\\BudMap\\");


    /* w stawka początkowa*/
    if (argc > 1) {
        cout << "Wczytany plik: " << plik << endl;
        skan3d = DaneWej::wczytajPlikLaser(plik,181);
    } else {//cz. nie podano nazwy pliku i bierze nazwę domyślną
        //skan3d = DaneWej::wczytajPlikLaser("D:\\Users\\mignat\\IPPT\\BudMap\\writelog_2006_11_15_09_53.log");
        //skan3d = DaneWej::wczytajPlikLaser("D:\\Users\\mignat\\IPPT\\BudMap\\test53.log");
        //skan3d = DaneWej::wczytajPlikLaser("D:\\Users\\mignat\\IPPT\\BudMap\\test.log");
        // Arek dom;
        //skan3d = DaneWej::wczytajPlikLaser("/home/arkadiusz/Dokumenty/IPPT/Skany/writelog_2006_11_15_09_38.log");
        //skan3d = DaneWej::wczytajPlikLaser("/home/arkadiusz/Dokumenty/IPPT/Skany/3110laboratorium1.log");
        //Arek kom Zuberec;
        //skan3d = DaneWej::wczytajPlikLaser("H:\\Documents and Settings\\Arek\\Projekty\\Klasyfikator_Powierzchni\\Klasyfikator_Powierzchni\\writelog_2006_11_15_09_38.log");
        //Arek komp trup;
       //skan3d = DaneWej::wczytajPlikLaser("/home/arkadiusz/JavaApp/klasyfikator/Klasyfikator_Powierzchni/writelog_2006_11_15_09_38.log",181);
       
       skan3d = DaneWej::wczytajPlikLaser2("/home/arkadiusz/Dokumenty/IPPT/skany/korytarz_z_walcem1.log",361);
       //skan3d = DaneWej::wczytajPlikLaser2("/home/arkadiusz/Dokumenty/IPPT/skany/30_01_09/lab3.log",181);
       //skan3d = DaneWej::wczytajPlikLaser("/home/arkadiusz/Dokumenty/IPPT/skany/writelog_2006_11_15_09_53.log",180);
        //skan3d = DaneWej::wczytajPlikLaser("/home/arkadiusz/Dokumenty/IPPT/skany/korytarzmchtr2.log",181);
    } //koniec if-else


    //WekNormalne::liczWektoryNormalne(skan3d);
    WekNormalne::liczWektoryNormalne2(skan3d,0.02,0.25,7.0);//0.05 == 5 cm
    
    Algorytmy::wykryjPodloge(skan3d);
    Algorytmy::rysujElement(skan3d, OB_Podloga, "/home/arkadiusz/Dokumenty/IPPT/GrantI/podloga.pbm");

    Algorytmy::wykryjSufit(skan3d);
    Algorytmy::rysujElement(skan3d, OB_Sufit,"/home/arkadiusz/Dokumenty/IPPT/GrantI/sufit.pbm" );
    Algorytmy::wykryjObszary(skan3d);
    Algorytmy::rysuj(skan3d,"/home/arkadiusz/Dokumenty/IPPT/GrantI/obszary.pbm");
    Algorytmy::generujPlik_XYZEtykieta(skan3d, "/home/arkadiusz/Dokumenty/IPPT/GrantI/dane.xyze" );

    WekNormalne::cosinusy(skan3d);

    //ZapiszPlik::zapiszPPM(skan3d,"H:\\Documents and Settings\\Arek\\test.ppm");
    //ZapiszPlik::zapiszPPM2(skan3d,"H:\\Documents and Settings\\Arek\\test2.ppm");
    ZapiszPlik::zapiszPPM(skan3d, "/home/arkadiusz/Dokumenty/IPPT/GrantI/3110lab1.ppm");
    ZapiszPlik::zapiszPPM2(skan3d, "/home/arkadiusz/Dokumenty/IPPT/GrantI/3110lab1Ro.ppm");
    //ZapiszPlik::zapiszPGM_rgb(skan3d, "/home/arkadiusz/Dokumenty/IPPT/GrantI/obrazekR.pgm", zpRed);
    //ZapiszPlik::zapiszPGM_rgb(skan3d, "/home/arkadiusz/Dokumenty/IPPT/GrantI/obrazekG.pgm", zpGreen);
    //ZapiszPlik::zapiszPGM_rgb(skan3d, "/home/arkadiusz/Dokumenty/IPPT/GrantI/obrazekB.pgm", zpBlue);
    //wczytywany na podstawie obrazka, jest wersja by ze skan3d ale jeszcze nie napisana;
    /*
     * AopenCV::przetwarzanie(
            "/home/arkadiusz/Dokumenty/IPPT/GrantI/obrazekR.pgm",
            "/home/arkadiusz/Dokumenty/IPPT/GrantI/obrazekG.pgm",
            "/home/arkadiusz/Dokumenty/IPPT/GrantI/obrazekB.pgm");
    */
    //AopenCV::przetwarzanie("/home/arkadiusz/Dokumenty/IPPT/GrantI/obrazek.ppm");

    //AlgorytmB1::Main();
    std::string katalog("/home/arkadiusz/Dokumenty/IPPT/skany/obszary040309/");
    std::string plikMAT("areas-writelog-2006-11-15-09-38-log.mat");
    std::string plikPBM("obraz.pbm");
    std::string plikPNG("obrazWyn.png");
    std::vector< std::vector<int> > M = Algorytmy::wczytaj();
    //______________________________________________________________________________
    cout << endl << endl << "      !KONIEC!" << endl << endl;

    finish = clock();
    duration = (double) (finish - start) / CLOCKS_PER_SEC;
    cout << "\nCzas = " << duration;
    return (EXIT_SUCCESS);
}

